
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
// 此util.js工具类封装全局调用的方法
export default {
  // 封装post请求params传值的方法,当值有多个时调用
  toParams(list) {
    var params = new URLSearchParams()
    for (var key in list) {
      params.append(key, list[key])
    }
    return params
  },
  // 封装post请求params传值的方法，当值为单个时调用
  // name为单个值对应的key值
  // value为单个key值对应的value值
  toParamSemi(name, value) {
    var params = new URLSearchParams()
    params.append(name, value)
    return params
  },
  // 导出execlbiaoge
  exportExcel(domId, fileName) {
    /* 转换成excel时，使用原始的格式，解决数字列自动转科学计数法问题 */
    const xlsxParam = { raw: true }
    const wb = XLSX.utils.table_to_book(document.querySelector('#' + domId), xlsxParam)
    const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
    try {
      FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName + '.xlsx')
    } catch (e) {
      if (typeof console !== 'undefined') {
      }
    }
    return wbout
  },
  getNowTime(timestamp) {
    var date = new Date(timestamp * 1000)// 时间戳若为10位时需*1000
    var Y = date.getFullYear()
    var M = date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)
    var D = date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()
    var h = date.getHours() >= 10 ? date.getHours() : '0' + date.getHours()
    var m = date.getMinutes() >= 10 ? date.getMinutes() : '0' + date.getMinutes()
    var s = date.getSeconds() >= 10 ? date.getSeconds() : '0' + date.getSeconds()
    return `${Y}-${M}-${D} ${h}:${m}:${s}`
  },
  getNowDate() {
    var date = new Date()
    let year = date.getFullYear()
    let month = date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1) // 注意月份从0开始，需要加1
    let day = date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()
    return `${year}-${month}-${day}`
  },
  weeks(timestamp) {
    // 星期
    var date = new Date(timestamp * 1000)// 时间戳若为10位时需*1000
    var s = date.getDay()
    if (s === 0) {
      return '星期日'
    } else if (s === 1) {
      return '星期一'
    } else if (s === 2) {
      return '星期二'
    } else if (s === 3) {
      return '星期三'
    } else if (s === 4) {
      return '星期四'
    } else if (s === 5) {
      return '星期五'
    } else {
      return '星期六'
    }
  },
  //  取最大值
  set_max(num) {
    // 1.判断是否小数：  //判断是否含有小数点：要检索的字符串值没有出现，则该方法返回 -1。
    if (num.toString().indexOf(".") != -1) {//有小数点
      num = Math.ceil(num);//向上取整 
    }
    // 2.向上取整数倍
    if (num.toString().length < 2) {
      // 一位数1
      num = 10;
    } else if (num.toString().length < 3) {
      // 2位数
      num = Math.ceil(num / 5) * 5;// 变成最近的5的倍数
    } else {
      // 位数--先判断是不是1000...的倍数
      var t = '';
      for (let i = 0; i < num.toString().length - 1; i++) {
        t += '0';//'0000...'
      }
      if ((num % Number(1 + t)) != 0) {//不是100的倍数

        num = (Number(num.toString().substr(0, 1)) + 1) * Number(1 + t);
      }
    }
    return num + 10
  },
  // 让文字根据屏幕自适应
  nowSizeHeight(val) {
    var nowClientHeight = document.documentElement.clientHeight
    return val * (nowClientHeight / 1080)
  },
  // 让文字根据屏幕自适应
  nowSizeWidth(val) {
    var nowClientWidth = document.documentElement.clientWidth
    return val * (nowClientWidth / 1920)
  },
  /* 根据浏览器大小推断缩放比例 */
  getScale() {
    let ww = window.innerWidth / 1920;
    let wh = window.innerHeight / 1080;
    if (window.innerWidth == 1920 && window.innerHeight == 1080) {
      return ww < wh ? ww : wh;
    } else {
      return ww < wh ? ww : wh * 0.8;
    }
  },
  // 将秒数转成时分秒
  formatSeconds(value) {
    let seconds = parseInt(value, 10);
    if (isNaN(seconds)) {
      return '00:00:00';
    }
    const hours = Math.floor(seconds / 3600);
    const minutes = Math.floor((seconds % 3600) / 60);
    const secs = seconds % 60;

    const hoursString = hours < 10 ? '0' + hours : hours.toString();
    const minutesString = minutes < 10 ? '0' + minutes : minutes.toString();
    const secsString = secs < 10 ? '0' + secs : secs.toString();

    return hoursString + '时' + minutesString + '分' + secsString + '秒';
  }
}
